package com.ddhcodeduck.common.enums;

import lombok.Getter;

/**
 * WebSocket 消息类型枚举
 */
@Getter
public enum MessageType {

    /**
     * 群聊消息（所有人可见）
     */
    GROUP("group", "群聊"),

    /**
     * 私聊消息（点对点发送）
     */
    PRIVATE("private", "私聊"),

    /**
     * 广播消息（服务端主动推送）
     */
    BROADCAST("broadcast", "广播"),

    /**
     * 系统通知类消息
     */
    NOTICE("notice", "通知"),

    /**
     * 用户上线事件
     */
    ONLINE("online", "上线"),

    /**
     * 用户下线事件
     */
    OFFLINE("offline", "下线");

    private final String type;
    private final String description;

    MessageType(String type, String description) {
        this.type = type;
        this.description = description;
    }

    /**
     * 根据 type 获取对应的枚举值
     *
     * @param type 类型标识（英文字符串）
     * @return MessageType
     */
    public static MessageType fromType(String type) {
        for (MessageType messageType : values()) {
            if (messageType.getType().equalsIgnoreCase(type)) {
                return messageType;
            }
        }
        throw new IllegalArgumentException("未知的消息类型 type: " + type);
    }
}
